package com.rabbit.eap.system.service;

import com.rabbit.eap.framework.common.api.ApiResult;
import com.rabbit.eap.framework.common.service.BaseService;
import com.rabbit.eap.system.domain.TreeSelect;
import com.rabbit.eap.system.dto.SysDeptDTO;
import com.rabbit.eap.system.entity.SysDept;
import com.rabbit.eap.system.param.SysDeptPageParam;
import com.rabbit.eap.system.vo.SysDeptVO;

import java.util.List;

/**
 * @projectName: eap
 * @packageName: com.rabbit.eap.system.service
 * @className: ISysDeptService
 * @author： rabbit
 * @version： 1.0
 * @since： 2020/06/06 23:34:02
 * <p>Description:
 * 部门表 服务类
 * </p>

 */
public interface ISysDeptService extends BaseService<SysDept> {


    /**
     * @Description: 添加部门表
     * @methodName: saveSysDept
     * @param sysDeptDTO:sysDeptDTO数据传输对象
     * @return: ApiResult
     * @throws Exception
     * @date: 2020/06/06 23:34:02
     * @author: rabbit
     */
    ApiResult saveSysDept(SysDeptDTO sysDeptDTO) throws Exception;


    /**
     * @Description: 修改部门表
     * @methodName: modifySysDept
     * @param  sysDeptDTO:sysDeptDTO数据传输对象
     * @return: ApiResult
     * @throws Exception
     * @date: 2020/06/06 23:34:02
     * @author: rabbit
     */
    ApiResult modifySysDept(SysDeptDTO sysDeptDTO) throws Exception;

    /**
     * @Description: 删除部门表
     * @methodName: removeSysDept
     * @param deptId:部门Id
     * @return: ApiResult.result(flag)
     * @throws Exception
     * @date: 2020/06/06 23:34:02
     * @author: rabbit
     */
    ApiResult removeSysDept(Long deptId) throws Exception;

    /**
     * @Description: 根据Id获取部门表详情
     * @methodName: getSysDeptInfo
     * @param id: id
     * @return:  SysDeptVO
     * @throws Exception
     * @date: 2020/06/06 23:34:02
     * @author: rabbit
     */
    ApiResult getSysDeptById(Long id) throws Exception;

    /**
     * @Description: 部门表分页列表
     * @methodName: getSysDeptPageList
     * @param sysDeptPageParam
     * @return: Paging<SysDeptVO>
     * @throws Exception
     * @date: 2020/06/06 23:34:02
     * @author: rabbit
     */
    ApiResult getSysDeptPageList(SysDeptPageParam sysDeptPageParam) throws Exception;

    /**
     * @Description: 获取部门列表
     * @methodName: getSysDeptList
     * @param sysDeptPageParam:
     * @return: java.util.List<com.rabbit.eap.system.entity.SysDept>
     * @date: 2020/6/26 20:59
     * @author: rabbit
     *
     */
    List<SysDept> getSysDeptList(SysDeptPageParam sysDeptPageParam);

    /**
     * @Description: 获取部门下拉列列表
     * @methodName: getDeptTree
     * @param sysDeptPageParam:
     * @return: java.util.List<TreeSelect>
     * @date: 2020/6/26 21:40
     * @author: rabbit
     *
     */
    List<TreeSelect> getDeptTree(SysDeptPageParam sysDeptPageParam);

    /**
     * @Description: 获取对应角色部门列表树
     * @methodName: getRoleDeptTree
     * @param roleId: 角色Id
     * @return: com.rabbit.eap.framework.common.api.ApiResult
     * @date: 2020/6/26 21:39
     * @author: rabbit
     *
     */
    ApiResult getRoleDeptTree(Long roleId);

    List<SysDeptVO> getSysDeptAll(SysDeptPageParam sysDeptPageParam);

    ApiResult getRoleDept(Long roleId);
}
